51单片机small、compact、large模式区别以及遇到的问题 您所在的位置:网站首页 big 和large 区别 51单片机small、compact、large模式区别以及遇到的问题

51单片机small、compact、large模式区别以及遇到的问题

2024-06-02 20:54| 来源: 网络整理| 查看: 265

51单片机small、compact、large模式区别以及遇到的问题 项目中遇到把单片机内存模式从small模式改到large模式后,程序编译下载后,工作不正常的情况,所以了解一下51单片机各内存模式的区别。

51单片机的RAM分为片内和片外,标准的51内核是0x00~0x7F一共128B,而现在的大多数半导体厂商开发的51系列单片机都带了扩展片内RAM,即片内RAM区域一般是从0x00到0xFF一共256B。随着功能需求越来越多,程序量越来越大,那片内这256B也不够用了,因此又扩展了片外RAM,片外RAM的预留比较大,最大可以从0x0000到0xFFFF一共64KB,当然了,每个具体型号有多大不一定,具体看通过芯片的手册来了解。

在Keil中编写程序,总程序中所有变量占用的字节数少于128B时候,并且储存模式为small时,对不定义初值的变量编译器将默认为0;一旦程序中变量总数量超过128B,必须对所有变量进行初始化,否则未被初始化的变量的默认值就是不确定的。当变量总和超过128B时候,必须重设定存储器的存储模式。

存储器模式一共有三种,分别为small、large、compact模式。

data : 片内RAM从0x00~0x7F idata: 片内RAM从0x00~0xFF pdata:片外RAM从0x00~0xFF xdata:片外RAM从0x0000~0xFFFF

small模式

在small模式中,所有默认变量均装入单片机内部的RAM中,内部RAM的低128B,例如:uchar a ; float b等变量时候;该模式下的优点:访问速度快、缺点是空间有限,且对堆栈的分配比较少,难以把握,碰到递归调用时候需要小心。这种模式只适用于小程序。

compact模式

在compact模式中,所有默认变量均位于单片机的片外低256B RAM中,和在small模式中使用关键字 pdata来定义数据变量的效果一样,如 uchar pdata a[100];在该模式下程序总变量空间不能超过256B。 对于只有128B的单片机来说,使用此模式定义超过128B变量数据时,将发生错误。其优点是较small模式宽裕,速度较small慢,但是比large快,是一种中间状态;

large模式

在large模式中,所有默认变量优先放在外部64KB的RAM中,这和使用关键字xdata 来定义变量的效果一样。该模式的优点是空间大,可存变量多;缺点是:访问速度慢,尤其对于两个以上字节变量访问速度来说更是如此。在large模式下编写程序,定义的变量总数千万不能超过对应单片机的内部最大RAM字节数,因为即使超过了,编译器也不会提示错误,但是程序必然会出错。

假设单片机内部RAM只有128B,开large模式后,理论上变量最多可以存64K,但是实际上单片机内部没有这么多空间,所以即使变量超过实际最大空间,编译时也能编译通过,但实际下载后是不能正常运行。

相关链接 关于51中ram内存不够用和局部变量 51 small、compact、large模式 51单片机的RAM区域划分以及常遇到的问题



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有